package obstaculos;

import org.anddev.andengine.entity.primitive.Rectangle;
import org.anddev.andengine.entity.sprite.AnimatedSprite;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.opengl.texture.TextureManager;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.anddev.andengine.opengl.texture.region.TiledTextureRegion;

import android.content.Context;

public class PlataformasCiclicas extends Obstaculo{

	private BitmapTextureAtlas mapaDeTexturas;
	private TiledTextureRegion regiaoDaTextura;
	
	int timerAtivacao = 0;

	public PlataformasCiclicas(int x, int y, Context contexto, TextureManager tm) {
		this.x = x;
		this.y = y;
		largura = 64;
		altura = 128;
		
		mapaDeTexturas = new BitmapTextureAtlas(512, 64, TextureOptions.BILINEAR);
		BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/obstaculos/");
		regiaoDaTextura = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(this.mapaDeTexturas, contexto, "Plataforma ciclica.png", 0, 0, 3, 1);
		tm.loadTexture(mapaDeTexturas);
		
		spriteAnimado = new AnimatedSprite(x, y, regiaoDaTextura);

		areaColisao = new Rectangle(x, y + 52, 128, 12);
		areaColisao.setVisible(false);
	}

	@Override
	public void atualiza() {
		if(!primeiraVez){
			primeiraVez = true;
			listaDePosicoes[0][0] = (int) meuGatilho.x - 160; listaDePosicoes[1][0] = (int) meuGatilho.y - 192;
			listaDePosicoes[0][1] = (int) meuGatilho.x - 160; listaDePosicoes[1][1] = (int) meuGatilho.y + 64;
			listaDePosicoes[0][2] = (int) meuGatilho.x + 96 ; listaDePosicoes[1][2] = (int) meuGatilho.y + 64;
			listaDePosicoes[0][3] = (int) meuGatilho.x + 96 ; listaDePosicoes[1][3] = (int) meuGatilho.y - 192;
			for(int i = 0; i < 4; i++){
				if(x == listaDePosicoes[0][i] && y == listaDePosicoes[1][i]){
					if(i == 3){
						posicaoObjetivo = 0;
					}else{
						posicaoObjetivo = i+1;
					}
				}
			}
			//     2 > 1
			//          
			//     ^   V
			//          
			//     3 < 0
		}
		ciclo++;
		if(ciclo%5 == 0){
			for(int i = 0; i < 6; i++){
				if(posicaoObjetivo == 3){
					x --;
					if(x == listaDePosicoes[0][0]){
						posicaoObjetivo = 2;
					}
				}
				if(posicaoObjetivo == 2){
					y --;
					if(y == listaDePosicoes[1][0]){
						posicaoObjetivo = 1;
					}
				}
				if(posicaoObjetivo == 1){
					x ++;
					if(x == listaDePosicoes[0][2]){
						posicaoObjetivo = 0;
					}
				}
				if(posicaoObjetivo == 0){
					y ++;
					if(y == listaDePosicoes[1][1]){
						posicaoObjetivo = 3;
					}
				}
			}
		}
		if(meuGatilho.ativado && !ativado){
			ativado = true;
			spriteAnimado.animate(100, false);
			spriteAnimado.setCurrentTileIndex(2);
		}
		if(!meuGatilho.ativado && ativado){
			ativado = false;
			spriteAnimado.setCurrentTileIndex(0);
		}
	}

	@Override
	public boolean colidiuComDono(AnimatedSprite spriteDono) {
		if(spriteDono.collidesWith(areaColisao)){
			return true;
		}else{
			return false;
		}
	}

	@Override
	public void posicionaNaCena(int mapx, int mapy) {
		spriteAnimado.setPosition(x-mapx, y-mapy);
		areaColisao.setPosition((int)x-mapx, (int)y+52-mapy);
	}
}
